package com.yxh.www.author.service;

import com.yxh.www.author.domain.SmUser;
import com.yxh.www.common.result.Result;
import com.yxh.www.mysql.base.BaseService;


/**
 * <p>
 * 系统用户表 服务类
 * </p>
 *
 * @author Yangxiaohui
 * @since 2020-05-08
 */
public interface SmUserService extends BaseService<SmUser> {
    /**
     * 新增系统用户信息
     * `/smUser/addSmUser`
     *
     * @param userName  用户名称
     * @param userPhone 手机号码
     * @param loginPass 登录密码
     * @param userPhoto 用户头像    非必填
     * @param userMail  用户邮箱    非必填
     * @return 统一响应 {@link Result}
     */
    Result<Object> addSmUser(String userName, String userPhone, String loginPass, String userPhoto, String userMail);

    /**
     * 根据用户ID修改用户信息
     * `/smUser/modifySmUser`
     *
     * @param id        用户ID
     * @param userName  用户名称
     * @param userPhone 手机号码    非必填
     * @param loginPass 登录密码    非必填
     * @param userPhoto 用户头像    非必填
     * @param userMail  用户邮箱    非必填
     * @return 统一响应 {@link Result}
     */
    Result<Object> modifySmUser(String id, String userName, String userPhone, String loginPass, String userPhoto, String userMail);

    /**
     * 根据用户ID删除单个用户
     * `/smUser/removeSmUser`
     *
     * @param id 用户ID   必填
     * @return 统一响应 {@link Result}
     */
    Result<Object> removeSmUser(String id);

    /**
     * 根据用户ID删除多个用户
     * `/smUser/removeSmUsers`
     *
     * @param id 用户ID   必填
     * @return 统一响应 {@link Result}
     */
    Result<Object> removeSmUsers(String[] id);

    /**
     * 根据指定参数获取用户列表
     * `/smUser/listSmUser`
     *
     * @param userName  用户名称    非必填-模糊匹配
     * @param userPhone 手机号码    非必填-模糊匹配
     * @param userMail  用户邮箱    非必填-模糊匹配
     * @return 统一响应 {@link Result}
     */
    Result<Object> listSmUser(String userName, String userPhone, String userMail);

    /**
     * 根据指定参数获取用户列表
     * `/smUser/pageSmUser`
     *
     * @param userName  用户名称    非必填-模糊匹配
     * @param userPhone 手机号码    非必填-模糊匹配
     * @param userMail  用户邮箱    非必填-模糊匹配
     * @param pageNum   页码          默认值 1
     * @param pageSize  页面数据长度    默认值 20
     * @return 统一响应 {@link Result}
     */
    Result<Object> pageSmUser(String userName, String userPhone, String userMail, Long pageNum, Long pageSize);

    /**
     * 用户登录 获取Token
     * `/smUser/authorSmUser`
     *
     * @param userName  用户名 非必填
     * @param userPhone 用户手机号 非必填
     * @param loginPass 登录密码 必填
     * @return 统一响应 {@link Result}
     */
    Result<Object> authorSmUser(String userName, String userPhone, String loginPass);

}
